package sandpay.demo;


import com.alibaba.fastjson.JSONObject;
import com.zf.yichat.utils.response.FsResponseGen;
import org.apache.commons.lang.RandomStringUtils;
import sandpay.http.HttpUtil;
import sandpay.util.ConfigurationManager;
import sandpay.util.DynamicPropertyHelper;

import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * （仅供参考）
 *
 * @author sandpay
 */
public class FastPayApiUtil {
	
    // 商户号
    public static final String mid = DynamicPropertyHelper.getStringProperty("sandpay.merch.mid").get();
    public static final String plmid = DynamicPropertyHelper.getStringProperty("sandpay.merch.plmid").get();
    public static final String productCode = DynamicPropertyHelper.getStringProperty("sandpay.merch.productcode").get();
    
    /**
     * 订单查询接口地址
     */
    public static final String GATEWAY_QUERYORDER_URL = "/gateway/api/order/query";
    /**
     * 对账单申请接口地址
     */
    public static final String GATEWAY_CLEARFILE_URL = "/gateway/api/clearfile/download";
    /**
     * 退款申请接口地址
     */
    public static final String GATEWAY_REFUND_URL = "/gateway/api/order/refund";

    //一件快捷
    public static final String FASTPAY_INDEX = "fastPay/quickPay/index";


    /**
     * 日期格式转换
     *
     * @return String
     * @Title: getCurTimestampStr
     */
    public static String getCurTimestampStr() {
        DateFormat fmt = new SimpleDateFormat("yyyyMMddHHmmss");
        return fmt.format(System.currentTimeMillis());
    }
    public static void main(String[] args) {
        try {
            ConfigurationManager.loadProperties(new String[]{"sandPayConfig"});
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
//            String orderId=getOrderCode();
//            String data = getSendDataWithdraw(String.valueOf(userId),String.valueOf(money.multiply(new BigDecimal("100")).intValue()),orderId,bank.getBankNumber(),bank.getName());
            long commentTime =  System.currentTimeMillis();
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
            // time为转换格式后的字符串
            String time = simpleDateFormat.format(new Date(commentTime));
            String money="1.00";
            // 报文体
            JSONObject bodyJson = new JSONObject();
            bodyJson.put("version", "01"); //交易日期/结算日期
            bodyJson.put("productId", "00000004"); //文件返回类型
            bodyJson.put("tranTime",time);
            int length=money.length();
            for(int i=0;i<(12-length);i++){
                money="0"+money;
            }
            String orderId=System.currentTimeMillis()+"";
            bodyJson.put("orderCode",orderId);
            bodyJson.put("tranAmt",money);
            bodyJson.put("accAttr", "0");
            bodyJson.put("accType", "4");

            bodyJson.put("currencyCode", "156");
            bodyJson.put("accNo", "6215682600004822193");
            bodyJson.put("accName", "雷钢");
            bodyJson.put("remark", "客户提现");


            // 报文头
            //  dataJson.put("head",  getAgHeadJson("sandPay.fastPay.quickPay.index", "00000016"));
//        dataJson.put("body", bodyJson);
//        dataJson.put("extend", userId);
            String returnString = bodyJson.toJSONString();

            //读取配置中公共URL
            String url ="https://caspay.sandpay.com.cn/agent-main/openapi/agentpay";

            //创建HTTP辅助工具
            HttpUtil httpUtil = new HttpUtil();
            //通过辅助工具发送交易请求，并获取响应报文
            //生成交易记录

            String result = httpUtil.sendGateWayPost(url, returnString,  "");
            System.out.println(result);
            if(result==null){
                System.out.println(FsResponseGen.failMsg("系统异常")); ;
            }else {
                System.out.println(FsResponseGen.successData(result));
            }
            // System.out.println(":" + result);
            // 验签签名

        } catch (Exception e) {
            e.printStackTrace();
            System.out.println( FsResponseGen.failMsg("系统异常"));
        }


        //System.out.println(new BigDecimal("000000000100").divide(new BigDecimal("100")));    ;
//
//        String orderCode =System.currentTimeMillis()+"";
//         Map<String, Object> map = new HashMap<>();
//        map.put("userNo", "888112200001817");// 商户编号
//        map.put("productCode", "BANK_PAY_DAILY_ORDER");//产品类型
//        map.put("requestTime", DateUtils.formatDate(new Date())); // 交易请求时间
//        map.put("merchantOrderNo", orderCode);//商户订单号
//        map.put("receiverAccountNoEnc", "6215682600004822193"); // 收款账户号6236681210000293535
//        map.put("receiverNameEnc", "雷钢"); // 收款人
//        map.put("receiverAccountType", "201");//账户类型
//        map.put("paidAmount", "7600"); //交易金额
//        map.put("currency", "201");//币种
//        map.put("isChecked", "202");//是否复核
//        map.put("paidDesc", "用户提现");//代付说明
//        map.put("paidUse", "207");//代付用途
//        map.put("callbackUrl", "http://baidu.com");//代付用途
//        try {
//            String respStr = HjWithdrawUtil.getHjResponse("02972f1b2f414e6fa621b05dee416c22", map);
//            Map<String, Object> httpResponseMap = (Map<String, Object>) JSONObject.parse(respStr);
//            Integer statusCode = (Integer) httpResponseMap.get("statusCode");
//            if (2001 == statusCode) {
////                return FsResponseGen.success();
//            } else if (2002 == statusCode) {
//                logger.error("受理失败:{}", respStr);
//             } else {
// //                return FsResponseGen.success();
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//            logger.error("withdraw err:{}", e.getMessage());
////            return FsResponseGen.failMsg("提现异常");
//        }
    }

//    public static void main(String[] args) {
//        try {
//            ConfigurationManager.loadProperties(new String[]{"sandPayConfig"});
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        try {
//            String data = getSendData("10086","100");
//            //读取配置中公共URL
//            String url ="https://cashier.sandpay.com.cn/";
//                  //  DynamicPropertyHelper.getStringProperty("sandpay.gateWay.url").get();
//            //拼接本交易URL
//            url += FastPayApiUtil.FASTPAY_INDEX;
//            //创建HTTP辅助工具
//            HttpUtil httpUtil = new HttpUtil();
//            //通过辅助工具发送交易请求，并获取响应报文
//            String result = httpUtil.sendGateWayPost(url, data, null);
//            System.out.println(":" + result);
//            // 验签签名
//
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }


    /**
     * 随机生成订单号
     *
     * @return
     */
    public static String getOrderCode() {

        String tradeNo = new SimpleDateFormat("MMddHHmmss").format(new Date())
                + RandomStringUtils.random(8, "abcdefghijklmnopqrstuvwxyz1234567890");
        return tradeNo;
    }

}
